home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / UserDict.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  9KB  |  296 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''A more or less complete user-defined wrapper around dictionary objects.'''
  5.  
  6. class UserDict:
  7.     
  8.     def __init__(self, dict = None, **kwargs):
  9.         self.data = { }
  10.         if dict is not None:
  11.             self.update(dict)
  12.         
  13.         if len(kwargs):
  14.             self.update(kwargs)
  15.         
  16.  
  17.     
  18.     def __repr__(self):
  19.         return repr(self.data)
  20.  
  21.     
  22.     def __cmp__(self, dict):
  23.         if isinstance(dict, UserDict):
  24.             return cmp(self.data, dict.data)
  25.         else:
  26.             return cmp(self.data, dict)
  27.  
  28.     
  29.     def __len__(self):
  30.         return len(self.data)
  31.  
  32.     
  33.     def __getitem__(self, key):
  34.         if key in self.data:
  35.             return self.data[key]
  36.         
  37.         if hasattr(self.__class__, '__missing__'):
  38.             return self.__class__.__missing__(self, key)
  39.         
  40.         raise KeyError(key)
  41.  
  42.     
  43.     def __setitem__(self, key, item):
  44.         self.data[key] = item
  45.  
  46.     
  47.     def __delitem__(self, key):
  48.         del self.data[key]
  49.  
  50.     
  51.     def clear(self):
  52.         self.data.clear()
  53.  
  54.     
  55.     def copy(self):
  56.         if self.__class__ is UserDict:
  57.             return UserDict(self.data.copy())
  58.         
  59.         import copy as copy
  60.         data = self.data
  61.         
  62.         try:
  63.             self.data = { }
  64.             c = copy.copy(self)
  65.         finally:
  66.             self.data = data
  67.  
  68.         c.update(self)
  69.         return c
  70.  
  71.     
  72.     def keys(self):
  73.         return self.data.keys()
  74.  
  75.     
  76.     def items(self):
  77.         return self.data.items()
  78.  
  79.     
  80.     def iteritems(self):
  81.         return self.data.iteritems()
  82.  
  83.     
  84.     def iterkeys(self):
  85.         return self.data.iterkeys()
  86.  
  87.     
  88.     def itervalues(self):
  89.         return self.data.itervalues()
  90.  
  91.     
  92.     def values(self):
  93.         return self.data.values()
  94.  
  95.     
  96.     def has_key(self, key):
  97.         return self.data.has_key(key)
  98.  
  99.     
  100.     def update(self, dict = None, **kwargs):
  101.         if dict is None:
  102.             pass
  103.         elif isinstance(dict, UserDict):
  104.             self.data.update(dict.data)
  105.         elif isinstance(dict, type({ })) or not hasattr(dict, 'items'):
  106.             self.data.update(dict)
  107.         else:
  108.             for k, v in dict.items():
  109.                 self[k] = v
  110.             
  111.         if len(kwargs):
  112.             self.data.update(kwargs)
  113.         
  114.  
  115.     
  116.     def get(self, key, failobj = None):
  117.         if not self.has_key(key):
  118.             return failobj
  119.         
  120.         return self[key]
  121.  
  122.     
  123.     def setdefault(self, key, failobj = None):
  124.         if not self.has_key(key):
  125.             self[key] = failobj
  126.         
  127.         return self[key]
  128.  
  129.     
  130.     def pop(self, key, *args):
  131.         return self.data.pop(key, *args)
  132.  
  133.     
  134.     def popitem(self):
  135.         return self.data.popitem()
  136.  
  137.     
  138.     def __contains__(self, key):
  139.         return key in self.data
  140.  
  141.     
  142.     def fromkeys(cls, iterable, value = None):
  143.         d = cls()
  144.         for key in iterable:
  145.             d[key] = value
  146.         
  147.         return d
  148.  
  149.     fromkeys = classmethod(fromkeys)
  150.  
  151.  
  152. class IterableUserDict(UserDict):
  153.     
  154.     def __iter__(self):
  155.         return iter(self.data)
  156.  
  157.  
  158.  
  159. class DictMixin:
  160.     
  161.     def __iter__(self):
  162.         for k in self.keys():
  163.             yield k
  164.         
  165.  
  166.     
  167.     def has_key(self, key):
  168.         
  169.         try:
  170.             value = self[key]
  171.         except KeyError:
  172.             return False
  173.  
  174.         return True
  175.  
  176.     
  177.     def __contains__(self, key):
  178.         return self.has_key(key)
  179.  
  180.     
  181.     def iteritems(self):
  182.         for k in self:
  183.             yield (k, self[k])
  184.         
  185.  
  186.     
  187.     def iterkeys(self):
  188.         return self.__iter__()
  189.  
  190.     
  191.     def itervalues(self):
  192.         for _, v in self.iteritems():
  193.             yield v
  194.         
  195.  
  196.     
  197.     def values(self):
  198.         return [ v for _, v in self.iteritems() ]
  199.  
  200.     
  201.     def items(self):
  202.         return list(self.iteritems())
  203.  
  204.     
  205.     def clear(self):
  206.         for key in self.keys():
  207.             del self[key]
  208.         
  209.  
  210.     
  211.     def setdefault(self, key, default = None):
  212.         
  213.         try:
  214.             return self[key]
  215.         except KeyError:
  216.             self[key] = default
  217.  
  218.         return default
  219.  
  220.     
  221.     def pop(self, key, *args):
  222.         if len(args) > 1:
  223.             raise TypeError, 'pop expected at most 2 arguments, got ' + repr(1 + len(args))
  224.         
  225.         
  226.         try:
  227.             value = self[key]
  228.         except KeyError:
  229.             if args:
  230.                 return args[0]
  231.             
  232.             raise 
  233.  
  234.         del self[key]
  235.         return value
  236.  
  237.     
  238.     def popitem(self):
  239.         
  240.         try:
  241.             (k, v) = self.iteritems().next()
  242.         except StopIteration:
  243.             raise KeyError, 'container is empty'
  244.  
  245.         del self[k]
  246.         return (k, v)
  247.  
  248.     
  249.     def update(self, other = None, **kwargs):
  250.         if other is None:
  251.             pass
  252.         elif hasattr(other, 'iteritems'):
  253.             for k, v in other.iteritems():
  254.                 self[k] = v
  255.             
  256.         elif hasattr(other, 'keys'):
  257.             for k in other.keys():
  258.                 self[k] = other[k]
  259.             
  260.         else:
  261.             for k, v in other:
  262.                 self[k] = v
  263.             
  264.         if kwargs:
  265.             self.update(kwargs)
  266.         
  267.  
  268.     
  269.     def get(self, key, default = None):
  270.         
  271.         try:
  272.             return self[key]
  273.         except KeyError:
  274.             return default
  275.  
  276.  
  277.     
  278.     def __repr__(self):
  279.         return repr(dict(self.iteritems()))
  280.  
  281.     
  282.     def __cmp__(self, other):
  283.         if other is None:
  284.             return 1
  285.         
  286.         if isinstance(other, DictMixin):
  287.             other = dict(other.iteritems())
  288.         
  289.         return cmp(dict(self.iteritems()), other)
  290.  
  291.     
  292.     def __len__(self):
  293.         return len(self.keys())
  294.  
  295.  
  296.